300
"rangearea", a range chart displays sets of data points, each of which is defined by multiple values for the same category, and emphasizes the distance between the two values. The category labels are displayed on the category axis. The plain Range chart fills in the area between the top and the bottom value for each data point. (data requires array of array of two-numbers, such as [[from, to]], supports vertical field, scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:ValueAxis():Format := "value + `°`"
		oGraph:Series():Add("Jan(5 15), Feb(6 16), Mar(8 18), Apr(10 20), May(13 23), Jun(17 28), Jul(20 32), Aug(20 32), Sep(18 28), Oct(14 23), Nov(9 17), Dec(6 15)","Spain"):Type := "rangearea"
		oGraph:Series():Add("Jan(3 13), Feb(4 15), Mar(8 17), Apr(11 20), May(15 25), Jun(19 29), Jul(21 31), Aug(21 31), Sep(17 27), Oct(12 22), Nov(7 16), Dec(4 14)","Spain"):Type := "rangearea"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
299
"rangecolumn", single

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:ValueAxis():Format := "value + `°`"
		oGraph:Series():Add("Jan(5 15), Feb(6 16), Mar(8 18), Apr(10 20), May(13 23), Jun(17 28), Jul(20 32), Aug(20 32), Sep(18 28), Oct(14 23), Nov(9 17), Dec(6 15)","Spain"):Type := "RangeColumn"
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
298
"rangecolumn", a range column chart displays information as a range of data by plotting two Y-values (low and high) per data point. The vertical axis shows the values, and the horizontal axis shows the categories they belong to; in multiple-series range column charts, values are grouped by categories. (data requires array of array of two-numbers, such as [[from, to]], supports vertical field, scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:ValueAxis():Format := "value + `°`"
		oGraph:Series():Add("Jan(5 15), Feb(6 16), Mar(8 18), Apr(10 20), May(13 23), Jun(17 28), Jul(20 32), Aug(20 32), Sep(18 28), Oct(14 23), Nov(9 17), Dec(6 15)","Spain"):Type := "RangeColumn"
		oGraph:Series():Add("Jan(3 13), Feb(4 15), Mar(8 17), Apr(11 20), May(15 25), Jun(19 29), Jul(21 31), Aug(21 31), Sep(17 27), Oct(12 22), Nov(7 16), Dec(4 14)","Spain"):Type := "RangeColumn"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
297
"pie", a pie chart (or a circle chart) is a circular statistical graphic which is divided into slices to illustrate numerical proportion. In a pie chart, the arc length of each slice (and consequently its central angle and area) is proportional to the quantity it represents. While it is named for its resemblance to a pie which has been sliced, there are variations on the way it can be presented. (data requires array of numbers, non-scrollable)
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:SetProperty("Misc",18/*exPaddingInsidePie*/,2)
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "pie"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "pie"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
296
"waterfall", a waterfall chart is a form of data visualization that helps in understanding the cumulative effect of sequentially introduced positive or negative values. These intermediate values can either be time based or category based. The waterfall chart is also known as a flying bricks chart or Mario chart due to the apparent suspension of columns (bricks) in mid-air. Often in finance, it will be referred to as a bridge. (data requires array of numbers, supports vertical field, scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "waterfall"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "waterfall"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
295
"radarcolumn", stacked

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide")
				oSerie:Type := "radarcolumn"
				oSerie:Stack := "group"
			oSerie1 := oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native")
				oSerie1:Type := "radarcolumn"
				oSerie1:Stack := "group"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
294
"radarcolumn", displays data in radial columns starting from one center point. The circle is divided into equal portions depending on the number of columns and each column group occupies one portion (similar with "radarArea" type, data requires array of numbers, non-scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "radarcolumn"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "radarcolumn"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
293
"radarline", stacked

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide")
				oSerie:Type := "radarline"
				oSerie:Stack := "group"
			oSerie1 := oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native")
				oSerie1:Type := "radarline"
				oSerie1:Stack := "group"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
292
"radarline" (data requires array of numbers, non-scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "radarline"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "radarline"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
291
"radararea", stacked

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide")
				oSerie:Type := "radararea"
				oSerie:Stack := "group"
			oSerie1 := oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native")
				oSerie1:Type := "radararea"
				oSerie1:Stack := "group"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
290
"radararea", a radar chart is a graphical method of displaying multivariate data in the form of a two-dimensional chart of three or more quantitative variables represented on axes starting from the same point. The relative position and angle of the axes is typically uninformative, but various heuristics, such as algorithms that plot data as the maximal total area, can be applied to sort the variables (axes) into relative positions that reveal distinct correlations, trade-offs, and a multitude of other comparative measures. (data requires array of numbers, non-scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "radararea"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "radararea"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
289
"column", single

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "column"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
288
"column", stacked

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide")
				oSerie:Type := "column"
				oSerie:Stack := "group"
			oSerie1 := oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native")
				oSerie1:Type := "column"
				oSerie1:Stack := "group"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
287
"column", a column chart or column graph is a chart or graph that presents categorical data with rectangular columns with heights proportional to the values that they represent. A horizontal column chart is called a bar chart. (data requires array of numbers, supports vertical field, scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "column"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "column"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
286
"line", stacked

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide")
				oSerie:Type := "line"
				oSerie:Stack := "group"
			oSerie1 := oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native")
				oSerie1:Type := "line"
				oSerie1:Stack := "group"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
285
"line", a line chart or line graph, also known as curve chart is a type of chart which displays information as a series of data points called 'markers' connected by straight line segments. It is a basic type of chart common in many fields. It is similar to a scatter plot except that the measurement points are ordered (typically by their x-axis value) and joined with straight line segments. A line chart is often used to visualize a trend in data over intervals of time - a time series - thus the line is often drawn chronologically. In these cases they are known as run charts. (data requires array of numbers, supports vertical field, scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "line"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "line"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
284
"area", stacked

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide")
				oSerie:Type := "area"
				oSerie:Stack := "group"
			oSerie1 := oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native")
				oSerie1:Type := "area"
				oSerie1:Stack := "group"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
283
"area", an area chart or area graph displays graphically quantitative data. It is based on the line chart. The area between axis and line are commonly emphasized with colors, textures and hatchings. Commonly one compares two or more quantities with an area chart. (data requires array of numbers, supports vertical field, scrollable)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Pad := 18
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Chinese(14.1),Spanish(6.7),English(4.9),Hindi(4.2),Arabic(4.1),Bengali(3.3),Portuguese(2.9),Russian(2.8),Japanese(1.7),Lahnda(1.6)","Worldwide"):Type := "area"
			oSeries:Add("Chinese(13.2),Spanish(6.6),English(4.8),Hindi(4.1),Arabic(4.0),Bengali(3.2),Portuguese(2.8),Russian(2.7),Japanese(1.6),Lahnda(1.5)","Native"):Type := "area"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
282
Define the color to show the frame around the pies

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSerie := oGraph:Series():Add("1920(1.8),1945(2.3),1970(13.7),1995(5.7),2020(7.8)","Population")
			oSerie:Type := "Pie"
			oSerie:ShowValue := 7/*exValue+exLine+exPoint*/
			oSerie:SetProperty("Misc",7/*exPieFrameColor*/,255)
			oSerie:SetProperty("Misc",6/*exLineSize*/,4)
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
281
Define the width of the line to show the serie

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSerie := oGraph:Series():Add("1920(1.8),1945(2.3),1970(13.7),1995(5.7),2020(7.8)","Population")
			oSerie:Type := "Line"
			oSerie:SetProperty("Misc",6/*exLineSize*/,4)
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
280
Changes the spline's tension and alpha curves

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSerie := oGraph:Series():Add("1920(1.8),1945(2.3),1970(13.7),1995(5.7),2020(7.8)","Population")
			oSerie:Type := "Line"
			oSerie:Style := 1/*exSpline*/
			oSerie:SetProperty("Misc",4/*exSplineTension*/,0)
			oSerie:SetProperty("Misc",5/*exSplineAlpha*/,1)
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
279
Enables or disables the presentation of hollow representations. This indicates instances where the closing price exceeds the opening price, resulting in candlesticks characterized by unfilled bodies

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/msft.csv"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "msft"
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "candle"
			oSerie:SetProperty("Misc",3/*exCandleAllowHollow*/,.F.)
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
278
Define the size to display the candle stick

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 18
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oCategoryAxis:Format := "value mid 9 left 2"
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/msft.csv"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "msft"
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
			oSerie:SetProperty("Misc",2/*exCandleStickSize*/,2)
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
277
Define the radius to show the plot on scatter-type charts

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCursor
	LOCAL oSerie,oSerie1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oSerie := oGraph:Series():Add("11 22 33,44 55 66,77 88 99,12 34 56,78 90 23")
			oSerie:Type := "bubble"
			oSerie:SetProperty("Misc",1/*exScatterPlotSize*/,64)
		oSerie1 := oGraph:Series():Add("21 32 43,54 65 76,87 98 09,45 67 89,90 23 45")
			oSerie1:Type := "bubble"
			oSerie1:SetProperty("Misc",1/*exScatterPlotSize*/,64)
		oCursor := oGraph:Cursor()
			oCursor:Visible := .T.
			oCursor:ShowCursorXLine := .F.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
276
Customizes the captions to be shown within the legend

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:ValueAxis():AsPercent := .T.
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)"):LegendFormat := "trim(label replace `Ocean` with ``)"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
275
Stacked (data points within a series are stacked on top of each other rather than plotted side by side)
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:CategoryAxis():MajorGridLines():Color := "lightgray"
		oSeries := oGraph:Series()
			oSeries:Add("Electronics(350),Clothing(200),Books(150)",2001):Stack := "A"
			oSeries:Add("Electronics(500),Clothing(150),Books(180)",2002):Stack := "A"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
274
Draws a curved line

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSerie := oGraph:Series():Add("1920(1.8),1945(2.3),1970(3.7),1995(5.7),2020(7.8)","Population")
			oSerie:Type := "Line"
			oSerie:Style := 1/*exSpline*/
			oSerie:SetProperty("Misc",6/*exLineSize*/,2)
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
273
Customizes the values to display on the chart (showValue property includes the exValue)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:CategoryAxis():Visible := .F.
		oSerie := oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)")
			oSerie:ShowValue := 7/*exValue+exLine+exPoint*/
			oSerie:ValueFormat := "category + `<br><b>` + (percent format ``) + `%`"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
272
Shows or hides the serie's value-points, value-lines and values

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
271
Shows or hides the serie

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Facebook(125),Google(94),Twitter(38),LinkedIn(172),Instagram(53),Pinterest(187),Snapchat(104),WhatsApp(19)")
				oSerie:Visible := .F.
				oSerie:Vertical := .T.
				oSerie:Name := Transform(2001,"")
			oSeries:Add("Facebook(176),Google(81),Twitter(47),LinkedIn(159),Instagram(62),Pinterest(193),Snapchat(118),WhatsApp(25)"):Name := Transform(2002,"")
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
270
Show bars graph (the serie is showing the data vertically or horizontally)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABUQDg6AADACAxRDAMgBQKAAzAJBIYhiGgcYCgMZBSDeCYXABCEYRXBIZQ7BKNIxjSJwFiCCQwSDKEjyCKsGRHF6MI6gOYpCgOIYjRJNIASVAceAAHCUZrjSgobAiCYlTZCIBQS5oOBIACmabiegZLgmQInUrMEggVDgJSPuTWNQUdYdJQTHIZBpEWyLKjkNQwWrCNr3DTUEyNDauIDpCKLCpGZYYVRPOAgAKldxhGCaJokGkgc4HHyrcCwfDAMraCQQWAAF62Jb1JyrSSBchnOwpDpuCaVQLXUB5RRNQyZTiyIrtS5AAqnNJzW5cE46Li0B5QAC8QA1S7NPo/HaZT5kGB7ZDddzuADfcLlfD5BxEDCUhQmEPAbl6K4hlKQ5snwNwtleDxpBeMRIHmd4+A8R4/BuRZvEABQDEmDJoHUOQZEYMgVjQSIEE0fwRjCWQJAoEIXHWQxCAGBBggAbpemOCJaDaRowkQKwfgSEJCBQ" +;
			"DAGnCWAsDYTJTLSBwOlgfghggIgohYIA3A0Iw8GcCxCigZAsguB4hBwQ4HAyZAMjMJhJjIPBdA0SZxkAOoPEOIhMGEDYJHGSB0gmIg5CYSAokgAZggME4DCkAhACbIhgioIwImQDhXCOCQRHgNwogcIJyGCGImBGMAyAqYxJCISINAcAJcC0JxGmCbIiByQ5Zk4dYdCWORqFgJJGACYIkB0A5pn6AYgAmcY8DwHRDlCOg3CaZIKCwfgSgOOgUDwKRHFCfoUiWKRaF4eQACWMhUGEDoKHGWBAigag6gqJIpCmYJogMExDEqLA0ioah6giKAdkQGpOjWLQrGobjfEYMJwioHhEDqfpBjACohmAQoxGwewakiMpsisNBCCqbALEAQ40i0KtjCYRhQnSLQekQWxul2NwKlGaBEjgbg7gqZI5m4a4kEQK4tkuMBFjuLprFiDgnAYYJ8jAHxEHuXp5j4L4rnafI/m+PAGnoLBvgwEBH5Aa5Ih8GhEBKUIABKMJ" +;
			"sEMDwtAecQnBSRYxFwXwakYcZBCSNZDnGcQrCGlIigQagQkscgIEyShyjyKI3CARI8j8MZMDMLJXDSTZEjKYwqk6BJMnMPI8goMYwEQLoIEEOxElGNBdB8SpSHSTQjE6UZLj0FxRBONQ9E6cgpEaUQYj0IYFA0bxdlcNZilwfwTEiYRUDwHZDkCSxoAyNhQnMYgTHWYp4gcFB3C2Uxzl0N4IoQBvAjEwAQIApRfDvH2PELgOhEhUDwI0GgxBIgEDQEMRQ4hPgGBKBgEgSBTjIHkHwS4KQ8siEQJIMIkQxCvBwCoS4hAQCkBuIYcIuRrBzE6BMK4Eg7D0HOEAewIgDilFwPwE4mBODvDUCoew9BsiMCyJYQg+BlAiEwMQNArxwCKH6PARYLR6hSCuFYMYFRSgZBMCwA45gfiFHSAocomB5AnCmGcH4tAkgNFGHkFQNAGAEHAN4GQERhgQF0GsDIxg/iTHIJwMw4RVA2EMCEOA9APgGE+JgNATBHE4F6Ac" +;
			"UAZwuAYAAAgBBAQ==")
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("Facebook(125),Google(94),Twitter(38),LinkedIn(172),Instagram(53),Pinterest(187),Snapchat(104),WhatsApp(19)")
				oSerie:Color := 16777216
				oSerie:Vertical := .T.
			oSeries:Add("Facebook(176),Google(81),Twitter(47),LinkedIn(159),Instagram(62),Pinterest(193),Snapchat(118),WhatsApp(25)"):Color := 16777216
		oGraph:SeriesColors := "red,RGB(255,128,0)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
269
Define the name of the chart serie which is visible in the legend

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries
	LOCAL oValueAxis

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oValueAxis := oGraph:ValueAxis()
			oValueAxis:AsPercent := .T.
			oValueAxis:Format := "(value  * 100 format `0`) + `%`"
		oSeries := oGraph:Series()
			oSeries:Add("Asian(10),Black(13),Hispanic(15),White(60),Other(7)","<fgcolor blue>Population")
			oSeries:Add("Asian(65),Black(69),Hispanic(67),White(70),Other(68)"):Name := "<fgcolor teal>Height"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
268
Define the visual appearance of the serie using EBN colors (method 3,mixt)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABVoDg6AADACAxRDAMgBQKAAzAJBIYhiGgcYCgMZBSDeCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADIOAzyPAsVwSGobRpkEaIMiONoYR5Ac4yFAcQxHE6TZRGeQRRiGModT5HFIxXIsBgRECEQChFzQcCQAJUVZFdAyVQlDRCGSpJrkEC4cBCCZPTzUNR1LS9WS1DoaRJoG4ZHDUMJyS7dcjyHINGwxMinJrwKA6bi6BAwYYAEwUPAYcT9QaRZznOQaLhiQIdVxDNbURgWKgVBK/AiqCA7Bq2VpYZZmFB5VJ9P5LPiEcE+fAdTQHUS0dItPR7OiacJ4TpdF48BhVdY7UCEdoADYtYxCP6qSxiFDUDA/CsF5KloAAXm4VBfEuKJUFuZxSi6DouAY34NDWdItg2HgTjaWZHDuVpPAae4DkQGRwjyXBvlcE47iMdoelQDYyHcHJkGGFIAEAARAGkGJHEGVByBkVBUCSFhEgQIQ2BM" +;
			"RpDGQJAoHuEIXDUCAGBGAYBHsc4NhMNJOCqCJCDoKIKiKGIuC6CxjAiMgyguYw4iSXg2g2MZoEcEJJjGLA4CiBwwnSJQdEOcogHcEBKjGZBDCuB4xBSMQfEQcpUgAEoLgICBMC6SBBDiPghkUEwEgkFJMEILBVCyR4RDiGQckcIY8DYCwJnGQA6hAJApBIRoSCSKQyE6FAlCkUhWhYJYpHIXoYCYIwcg0FZHiCeA0hqJpJjocIQmQWQeEmEpklkPhRhSZRZF4WYWmWWR+GEFRoCoEoGBmQpQiiAwTgMIh0G4DpokmToPh2KQpmaFYfCmCZ8jcH4EnITBYA+RpQkQLg3A0Iw8iMIAHgGQA3AsSZxjwPApkcYS5h4BAijQegRAsCRAjQH5EhKXIBBKS4pGSPQhgUAo4HUEtHhAPQxgqUoMmNjRQhAHA7G6I42CUM4HmEKA7jILIrDKTo0C0KxSlaNglhKXB/BMSBxFwUw6k4c4im2QZujwIJtCySYSGyFQ" +;
			"YEOKwuk2M5tBEHpTjUbR7GQTgjgUUJym+QoyAwJwiDsSAxDQNJEi8fBXBePpxiGXA8AyMgbjMI5MHIXIenaRQvhwYp8BOMpskMM5PnMLQHAyQ4xAyIw4kWL4sGZDoxmiGwxkKLpxlQPQLi8TQaniUgziwap+BMbwRBsBJBjIO48hcHIHEGMAyAqbBbB6SZVjKLQnDuNptlsfBvA2Qx4iyKwM4GR6BBBMDAQwxQIDkA8BQQYoA+iqGSEUNgmxKhKDKLwVojQ3AGACBAFIFxCAgFIE8RgogUgcBiAsUY8BJAYCaLMPw/xgDwD2F8BYwxtBcCeBcNoWxOBwFIGEZgRgagGCcA0cYJwajOCiFwf4BRhAID4DARYxAEhcCgJkYwdQeB/CwCoeowhcgqBoAwAYWAxAVEiOIdAagkCLGCLmAoBwMB4DoEsRgYRwgyBkIcUg4BmAfZKEgQQUBGhCeGDYBAhQUDaBGBUAYeBHBVAcCIJ4KARCSCGGgbwcQjgaA4Gk" +;
			"foxgfjkDUV8GAswLCDE8AIBwtAjAAAQAggIA=")
		oSeries := oGraph:Series()
			oSeries:Add("Facebook(125),Google(94),Twitter(38),LinkedIn(172),Instagram(53),Pinterest(187),Snapchat(104),WhatsApp(19)"):Color := 16777216
			oSeries:Add("Facebook(176),Google(81),Twitter(47),LinkedIn(159),Instagram(62),Pinterest(193),Snapchat(118),WhatsApp(25)"):Color := 16777216
		oGraph:SeriesColors := "red,RGB(255,128,0)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
267
Define the color to show the serie (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Facebook(125),Google(94),Twitter(38),LinkedIn(172),Instagram(53),Pinterest(187),Snapchat(104),WhatsApp(19)")
			oSeries:Add("Facebook(176),Google(81),Twitter(47),LinkedIn(159),Instagram(62),Pinterest(193),Snapchat(118),WhatsApp(25)")
		oGraph:SeriesColors := "red,RGB(255,128,0)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
266
Define the color to show the serie (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Facebook(125),Google(94),Twitter(38),LinkedIn(172),Instagram(53),Pinterest(187),Snapchat(104),WhatsApp(19)"):Color := "red"
			oSeries:Add("Facebook(176),Google(81),Twitter(47),LinkedIn(159),Instagram(62),Pinterest(193),Snapchat(118),WhatsApp(25)"):Color := 33023
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
265
Changes the position of the serie

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Facebook(125),Google(94),Twitter(38),LinkedIn(172),Instagram(53),Pinterest(187),Snapchat(104),WhatsApp(19)")
			oSeries:Add("Facebook(176),Google(81),Twitter(47),LinkedIn(159),Instagram(62),Pinterest(193),Snapchat(118),WhatsApp(25)")
		oGraph:Series():Item(1):Position := 0
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
264
Referencing a series by its key

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oSeries := oGraph:Series()
			oSeries:Add("Facebook(125),Google(94),Twitter(38),LinkedIn(172),Instagram(53),Pinterest(187),Snapchat(104),WhatsApp(19)"):Key := "1st"
			oSeries:Add("Facebook(176),Google(81),Twitter(47),LinkedIn(159),Instagram(62),Pinterest(193),Snapchat(118),WhatsApp(25)"):Key := "2nd"
		oGraph:Series():Item("2nd"):Visible := .F.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
263
Removes the serie (click to remove the serie)
PROCEDURE OnClick(oGraph)
	oGraph:Series():Remove(0)
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:Click := {|| OnClick(oGraph)} /*Occurs when the user presses and then releases the left mouse button over the control.*/

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)")
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
262
Clears the series (click to remove all series)
PROCEDURE OnClick(oGraph)
	oGraph:Series():Clear()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:Click := {|| OnClick(oGraph)} /*Occurs when the user presses and then releases the left mouse button over the control.*/

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)")
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
261
Add multiple series (mixt)
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie,oSerie1
	LOCAL oSeries
	LOCAL oValueAxes
	LOCAL oValueAxis,oValueAxis1

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:SetProperty("Misc",1/*exBaseMajorUnits*/,"1,5")
		oGraph:CategoryAxis():MajorGridLines():Color := "lightgray"
		oValueAxes := oGraph:ValueAxes()
			oValueAxis := oValueAxes:Add("g+a")
				oValueAxis:End := 0.66
				oValueAxis:MajorGridLines():Step := 1000
			oValueAxis1 := oValueAxes:Add("p")
				oValueAxis1:Start := 0.66
				oValueAxis1:MajorGridLines():Step := 1000
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("UnitedStates(22.7),China(17.6),Japan(5.0),Germany(4.4),India(3.2),UnitedKingdom(3.1),France(3.0),Brazil(2.5)","GDP")
				oSerie:Axis := "g+a"
				oSerie:Stack := "g+a"
			oSeries:Add("UnitedStates(331),China(1400),Japan(126),Germany(83),India(1400),UnitedKingdom(68),France(67),Brazil(213)","Population"):Axis := "p"
			oSerie1 := oSeries:Add("UnitedStates(9.8),China(9.6),Japan(0.377),Germany(0.357),India(3.3),UnitedKingdom(0.610),France(0.695),Brazil(8.5)","Area")
				oSerie1:Axis := "g+a"
				oSerie1:Stack := "g+a"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
260
Add multiple series (same value-axis, stacked)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:CategoryAxis():MajorGridLines():Color := "lightgray"
		oSeries := oGraph:Series()
			oSeries:Add("UnitedStates(22.7),China(17.6),Japan(5.0),Germany(4.4),India(3.2),UnitedKingdom(3.1),France(3.0),Brazil(2.5)","GDP"):Stack := "g+a"
			oSeries:Add("UnitedStates(331),China(1400),Japan(126),Germany(83),India(1400),UnitedKingdom(68),France(67),Brazil(213)","Population")
			oSeries:Add("UnitedStates(9.8),China(9.6),Japan(0.377),Germany(0.357),India(3.3),UnitedKingdom(0.610),France(0.695),Brazil(8.5)","Area"):Stack := "g+a"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
259
Add multiple series (same value-axis, all stacked)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:CategoryAxis():MajorGridLines():Color := "lightgray"
		oSeries := oGraph:Series()
			oSeries:Add("UnitedStates(22.7),China(17.6),Japan(5.0),Germany(4.4),India(3.2),UnitedKingdom(3.1),France(3.0),Brazil(2.5)","GDP"):Stack := "all"
			oSeries:Add("UnitedStates(331),China(1400),Japan(126),Germany(83),India(1400),UnitedKingdom(68),France(67),Brazil(213)","Population"):Stack := "all"
			oSeries:Add("UnitedStates(9.8),China(9.6),Japan(0.377),Germany(0.357),India(3.3),UnitedKingdom(0.610),France(0.695),Brazil(8.5)","Area"):Stack := "all"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
258
Add multiple series (same value-axis)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:CategoryAxis():MajorGridLines():Color := "lightgray"
		oSeries := oGraph:Series()
			oSeries:Add("UnitedStates(22.7),China(17.6),Japan(5.0),Germany(4.4),India(3.2),UnitedKingdom(3.1),France(3.0),Brazil(2.5)","GDP")
			oSeries:Add("UnitedStates(331),China(1400),Japan(126),Germany(83),India(1400),UnitedKingdom(68),France(67),Brazil(213)","Population")
			oSeries:Add("UnitedStates(9.8),China(9.6),Japan(0.377),Germany(0.357),India(3.3),UnitedKingdom(0.610),France(0.695),Brazil(8.5)","Area")
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
257
Add multiple series (different value axes)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSeries
	LOCAL oValueAxes
	LOCAL oValueAxis,oValueAxis1,oValueAxis2

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:CategoryAxis():MajorGridLines():Color := "lightgray"
		oValueAxes := oGraph:ValueAxes()
			oValueAxis := oValueAxes:Add("g")
				oValueAxis:End := 0.33
				oValueAxis:Visible := .F.
				oValueAxis:MajorGridLines():Step := 1000
			oValueAxis1 := oValueAxes:Add("p")
				oValueAxis1:Start := 0.33
				oValueAxis1:End := 0.66
				oValueAxis1:Visible := .F.
				oValueAxis1:MajorGridLines():Step := 1000
			oValueAxis2 := oValueAxes:Add("a")
				oValueAxis2:Start := 0.66
				oValueAxis2:Visible := .F.
				oValueAxis2:MajorGridLines():Step := 1000
		oSeries := oGraph:Series()
			oSeries:Add("UnitedStates(22.7),China(17.6),Japan(5.0),Germany(4.4),India(3.2),UnitedKingdom(3.1),France(3.0),Brazil(2.5)","GDP"):Axis := "g"
			oSeries:Add("UnitedStates(331),China(1400),Japan(126),Germany(83),India(1400),UnitedKingdom(68),France(67),Brazil(213)","Population"):Axis := "p"
			oSeries:Add("UnitedStates(9.8),China(9.6),Japan(0.377),Germany(0.357),India(3.3),UnitedKingdom(0.610),France(0.695),Brazil(8.5)","Area"):Axis := "a"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
256
Display the values over the columns

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:ValuePoint := "0,,,,,,0"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
255
Define the pad, distance between value-label and its frame (the number indicated by the ValuePoint property in the 11-th position)
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,,,,,,,,8"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
254
Define the size of the frame around the value-label (the number indicated by the ValuePoint property in the 10-th position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,,,,,,,4"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
253
Define the color of the frame around the value-label (the color indicated by the ValuePoint property in the 9-th position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,,,,,,red"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
252
Define the background color of the value-label (the color indicated by the ValuePoint property in the 8-th position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,,,,,red"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
251
Define the length of the line (the number indicated by the ValuePoint property in the 7-th position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,,,,0"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
250
Define the size of the line from the value point to its label (the number indicated by the ValuePoint property in the 6-th position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,,,4"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
249
Define the color of the line from the value point to its label (the color indicated by the ValuePoint property in the 5-th position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,,red"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
248
Define the size of the frame around the value point (the number indicated by the ValuePoint property in the 4-th position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,,4"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
247
Define the color of the frame around the value point (the color indicated by the ValuePoint property in the 3-rd position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",,red"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
246
Define the color of the value point (the color indicated by the ValuePoint property in the 2-nd position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := ",red"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
245
Define the size of the value point (the number indicated by the ValuePoint property in the first position)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 48
		oGraph:ValuePoint := "16"
		oGraph:Series():Add("Pacific(16525), Atlantic(10646), Indian(7056), Southern(2033), Arctic(1406)"):ShowValue := 7/*exValue+exLine+exPoint*/
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
244
Disables resizing the chart by drag and drop (resize the chart's value by clicking and dragging with the middle mouse button)
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 64
		oGraph:AllowValueResize := 0/*exDisallow*/
		oGraph:Series():Add("Asia(4600), Africa(1300), Europe(747), North America(579), South America(431), Australia/Oceania(42)")
		oGraph:Series():Add("Asia(4458), Africa(3037), North America(2470), South America(1784), Antarctica(1400), Europe(1018), Australia/Oceania(856)")
		oGraph:Cursor():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
243
Scrolls programatically the chart
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 8
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/msft.csv"
		oGraph:ValueAxis():Format := "value format ``"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "msft"
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "candle"
		oGraph:SetProperty("ScrollPos",1/*exHScroll*/,256)
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
242
Disables scrolling the chart by clicking and dragging the chart
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 8
		oGraph:AllowScroll := 0/*exDisallow*/
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/msft.csv"
		oGraph:ValueAxis():Format := "value format ``"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "msft"
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "candle"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
241
Disables the scroll bars
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 8
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/msft.csv"
		oGraph:ValueAxis():Format := "value format ``"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "msft"
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "candle"
		oGraph:ScrollBars := 0/*exNoScroll*/
		oGraph:AllowScroll := 0/*exDisallow*/
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
240
Hides the scroll bars
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 8
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/msft.csv"
		oGraph:ValueAxis():Format := "value format ``"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "msft"
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "candle"
		oGraph:ScrollBars := 0/*exNoScroll*/
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
239
The maximum value of the axis does not fit the view. Is there anything I can do to ensure that it fits the view

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)")
		oGraph:Pad := 24
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
238
Customizes the "no or invalid data" message

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:Invalid := "<fgcolor red>no or invalid data"
		oGraph:FormatText := 9/*exTextAlignBottom+exTextAlignCenter*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
237
Sorts descending the serie

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)"):Vertical := .T.
		oGraph:Sort := "0:D"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
236
Sorts ascending the serie

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)"):Vertical := .T.
		oGraph:Sort := "0"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
235
I changed the ValueSize property but it appears that it has no effect

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 32
		oGraph:AutoFit := .F.
		oGraph:CategoryAxis():Format := "value replace `Ocean` with ``"
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)"):Type := "Column"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
234
Define the size to show a column or a bar within the chart

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 32
		oGraph:CategoryAxis():Format := "value replace `Ocean` with ``"
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)")
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
233
Customizes the tooltip (shown while the cursor hovers value-points of the chart)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:SetProperty("Background",65/*exToolTipBackColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 1,0,0 } )  , .F. ))
		oGraph:SetProperty("Background",66/*exToolTipForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oGraph:ToolTipFormat := "`<b>` + category + `</b><br>Value: ` + (value format ``)"
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)"):ShowValue := 1/*exPoint*/
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
232
Resizes the elements of the series to fit the control's content

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:Series():Add("1,2,3,4")
		oGraph:AutoFit := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
231
Define the preset color scheme for the chart's series, encompassing both regular and reduced values

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 8
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/msft.csv"
		oGraph:ValueAxis():Format := "value format ``"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "msft"
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "candle"
		oGraph:SeriesColors := "gray"
		oGraph:SeriesColorsDecrease := "black"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
230
Define the default colors for the chart's series

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oSerie
	LOCAL oValueAxis

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABUQDg6AADACAxRDAMgBQKAAzAJBIYhiGgcYCgMZBSDeCYXABCEYRXBIZQ7BKNIxjSJwFiCCQwSDKEjyCKsGRHF6MI6gOYpCgOIYjRJNIASVAceAAHCUZrjSgobAiCYlTZCIBQS5oOBIACmabiegZLgmQInUrMEggVDgJSPuTWNQUdYdJQTHIZBpEWyLKjkNQwWrCNr3DTUEyNDauIDpCKLCpGZYYVRPOAgAKldxhGCaJokGkgc4HHyrcCwfDAMraCQQWAAF62Jb1JyrSSBchnOwpDpuCaVQLXUB5RRNQyZTiyIrtS5AAqnNJzW5cE46Li0B5QAC8QA1S7NPo/HaZT5kGB7ZDddzuADfcLlfD5BxEDCUhQmEPAbl6K4hlKQ5snwNwtleDxpBeMRIHmd4+A8R4/BuRZvEABQDEmDJoHUOQZEYMgVjQSIEE0fwRjCWQJAoEIXHWQxCAGBBggAbpemOCJaDaRowkQKwfgSEJCBQ" +;
			"DAGnCWAsDYTJTLSBwOlgfghggIgohYIA3A0Iw8GcCxCigZAsguB4hBwQ4HAyZAMjMJhJjIPBdA0SZxkAOoPEOIhMGEDYJHGSB0gmIg5CYSAokgAZggME4DCkAhACbIhgioIwImQDhXCOCQRHgNwogcIJyGCGImBGMAyAqYxJCISINAcAJcC0JxGmCbIiByQ5Zk4dYdCWORqFgJJGACYIkB0A5pn6AYgAmcY8DwHRDlCOg3CaZIKCwfgSgOOgUDwKRHFCfoUiWKRaF4eQACWMhUGEDoKHGWBAigag6gqJIpCmYJogMExDEqLA0ioah6giKAdkQGpOjWLQrGobjfEYMJwioHhEDqfpBjACohmAQoxGwewakiMpsisNBCCqbALEAQ40i0KtjCYRhQnSLQekQWxul2NwKlGaBEjgbg7gqZI5m4a4kEQK4tkuMBFjuLprFiDgnAYYJ8jAHxEHuXp5j4L4rnafI/m+PAGnoLBvgwEBH5Aa5Ih8GhEBKUIABKMJ" +;
			"sEMDwtAecQnBSRYxFwXwakYcZBCSNZDnGcQrCGlIigQagQkscgIEyShyjyKI3CARI8j8MZMDMLJXDSTZEjKYwqk6BJMnMPI8goMYwEQLoIEEOxElGNBdB8SpSHSTQjE6UZLj0FxRBONQ9E6cgpEaUQYj0IYFA0bxdlcNZilwfwTEiYRUDwHZDkCSxoAyNhQnMYgTHWYp4gcFB3C2Uxzl0N4IoQBvAjEwAQIApRfDvH2PELgOhEhUDwI0GgxBIgEDQEMRQ4hPgGBKBgEgSBTjIHkHwS4KQ8siEQJIMIkQxCvBwCoS4hAQCkBuIYcIuRrBzE6BMK4Eg7D0HOEAewIgDilFwPwE4mBODvDUCoew9BsiMCyJYQg+BlAiEwMQNArxwCKH6PARYLR6hSCuFYMYFRSgZBMCwA45gfiFHSAocomB5AnCmGcH4tAkgNFGHkFQNAGAEHAN4GQERhgQF0GsDIxg/iTHIJwMw4RVA2EMCEOA9APgGE+JgNATBHE4F6Ac" +;
			"UAZwuAYAAAgBBAQ==")
		oGraph:SetProperty("Misc",4/*extVisibleBeforeAxis*/,1)
		oGraph:AutoFit := .T.
		oGraph:DataOptions := "hdr=1 eor=';' eof=' '"
		oGraph:Data := "Month Min Max;Jan -2 10;Feb 0 12;Mar 3 15;Apr 7 18;May 12 22;Jun 16 25;Jul 18 28;Aug 17 27;Sep 14 24;Oct 9 19;Nov 4 15;Dec 0 10"
		oValueAxis := oGraph:ValueAxis()
			oValueAxis:Format := "value + `°`"
			oValueAxis:MajorGridLines():Color := "transparent"
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Month"
			oCategoryAxis:MajorGridLines():Color := "lightgray"
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Min,Max"
			oSerie:Type := "RangeColumn"
			oSerie:Vertical := .T.
			oSerie:Color := 16777216
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
229
Updates the x-axis, y-axis

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oLineOptions,oLineOptions1
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oLineOptions := oGraph:XAxis():AxisLine()
			oLineOptions:Width := 2
			oLineOptions:Color := "red"
		oLineOptions1 := oGraph:YAxis():AxisLine()
			oLineOptions1:Width := 2
			oLineOptions1:Color := "red"
		oSerie := oGraph:Series():Add()
			oSerie:Data := "1 99 1,2 96 2,3 92 3,4 86 4,5 79 5,6 70 6,7 60 7,8 50 8,9 38 9,10 25 10,11 13 11"
			oSerie:Type := "bubble"
			oSerie:SetProperty("Misc",1/*exScatterPlotSize*/,96)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
228
Updates the default/first value-axis

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oValueAxis

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oValueAxis := oGraph:ValueAxis()
			oValueAxis:Tfi := "<fgcolor red>"
		oGraph:Series():Add("Friendster(121111111),Facebook(979750000),Flickr(79664888),Google Buzz(170000000),Google+(107319100),Hi5(900202990),Instagram(80202990),MySpace(80202990),Orkut(45067022),Pinterest(197319100),Reddit(360250000),Snapchat(280250000),TikTok(860250000),Tumblr(146890156),Twitter(160250000),WeChat(118123370),Weibo(79195730),Whatsapp(1160250000),YouTube(844638200)")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
227
Updates the default/first category-axis

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Asia,Africa,Europe,North America,Antarctica,South America,Australia/Oceania"
			oCategoryAxis:MajorGridLines():Color := "lightgray"
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("4600,1300,747,579,0,422,42")
				oSerie:Name := "Population"
				oSerie:Type := "Line"
				oSerie:SetProperty("Misc",6/*exLineSize*/,3)
			oSerie1 := oSeries:Add("4458,3037,1018,2470,1784,1018,856")
				oSerie1:Name := "Area"
				oSerie1:Type := "Column"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
226
Add multiple series into the same view

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oSerie,oSerie1
	LOCAL oSeries

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Asia,Africa,Europe,North America,Antarctica,South America,Australia/Oceania"
			oCategoryAxis:MajorGridLines():Color := "lightgray"
		oSeries := oGraph:Series()
			oSerie := oSeries:Add("4600,1300,747,579,0,422,42")
				oSerie:Name := "Population"
				oSerie:Type := "Line"
				oSerie:SetProperty("Misc",6/*exLineSize*/,3)
			oSerie1 := oSeries:Add("4458,3037,1018,2470,1784,1018,856")
				oSerie1:Name := "Area"
				oSerie1:Type := "Column"
		oGraph:Legend():Visible := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
225
Do do I get the DAO version I have installed
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		DevOut( CreateObject("DAO.DBEngine.35"):Version():Version() )
		DevOut( CreateObject("DAO.DBEngine.36"):Version():Version() )
		DevOut( CreateObject("DAO.DBEngine.120"):Version():Version() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
224
How do I get a list of interfaces the object implemenets
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oPrivDBEngine := CreateObject("DAO.DBEngine.120")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb"):OpenRecordset("MSFT")
		DevOut( Transform(CreateObject("Exontrol.PropertiesList"),"") )
		oGraph:DataSource := rs
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
223
Do do I get the ADO version I have installed
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		DevOut( "ADO Version:" )
		DevOut( CreateObject("ADODB.Connection"):Version():Version() )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
222
DAO, ACCDB, 120

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oFormatGridLinesOptions
	LOCAL oSerie
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		oPrivDBEngine := CreateObject("DAO.DBEngine.120")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb"):OpenRecordset("MSFT")
		oGraph:DataSource := rs
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oFormatGridLinesOptions := oCategoryAxis:ChartGridLines()
				oFormatGridLinesOptions:Format := "value left 7"
				oFormatGridLinesOptions:Align := 1024/*exTextCalcRect*/
				oFormatGridLinesOptions:Color := "lightgray"
			oCategoryAxis:Format := "value left 7"
			oCategoryAxis:Split := .T.
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
221
DAO, MDB, 120

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oFormatGridLinesOptions
	LOCAL oSerie
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		oPrivDBEngine := CreateObject("DAO.DBEngine.120")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb"):OpenRecordset("MSFT")
		oGraph:DataSource := rs
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oFormatGridLinesOptions := oCategoryAxis:ChartGridLines()
				oFormatGridLinesOptions:Format := "value left 7"
				oFormatGridLinesOptions:Align := 1024/*exTextCalcRect*/
				oFormatGridLinesOptions:Color := "lightgray"
			oCategoryAxis:Format := "value left 7"
			oCategoryAxis:Split := .T.
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
220
DAO, MDB

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oFormatGridLinesOptions
	LOCAL oSerie
	LOCAL rs
	LOCAL oPrivDBEngine

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		oPrivDBEngine := CreateObject("DAO.DBEngine.36")
			rs := oPrivDBEngine:OpenDatabase("C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.mdb"):OpenRecordset("MSFT")
		oGraph:DataSource := rs
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oFormatGridLinesOptions := oCategoryAxis:ChartGridLines()
				oFormatGridLinesOptions:Format := "value left 7"
				oFormatGridLinesOptions:Align := 1024/*exTextCalcRect*/
				oFormatGridLinesOptions:Color := "lightgray"
			oCategoryAxis:Format := "value left 7"
			oCategoryAxis:Split := .T.
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
219
ADODB, ACCDB, x64

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oFormatGridLinesOptions
	LOCAL oSerie
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		rs := CreateObject("ADODB.Recordset")
			rs:Open("MSFT","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb",1/*adOpenKeyset*/,1/*adLockReadOnly*/)
		oGraph:DataSource := rs
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oFormatGridLinesOptions := oCategoryAxis:ChartGridLines()
				oFormatGridLinesOptions:Format := "value left 7"
				oFormatGridLinesOptions:Align := 1024/*exTextCalcRect*/
				oFormatGridLinesOptions:Color := "lightgray"
			oCategoryAxis:Format := "value left 7"
			oCategoryAxis:Split := .T.
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
218
ADOR, ACCDB

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oFormatGridLinesOptions
	LOCAL oSerie
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		rs := CreateObject("ADOR.Recordset")
			rs:Open("MSFT","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oGraph:DataSource := rs
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oFormatGridLinesOptions := oCategoryAxis:ChartGridLines()
				oFormatGridLinesOptions:Format := "value left 7"
				oFormatGridLinesOptions:Align := 1024/*exTextCalcRect*/
				oFormatGridLinesOptions:Color := "lightgray"
			oCategoryAxis:Format := "value left 7"
			oCategoryAxis:Split := .T.
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
217
ADODB, MDB

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oFormatGridLinesOptions
	LOCAL oSerie
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		rs := CreateObject("ADODB.Recordset")
			rs:Open("MSFT","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oGraph:DataSource := rs
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oFormatGridLinesOptions := oCategoryAxis:ChartGridLines()
				oFormatGridLinesOptions:Format := "value left 7"
				oFormatGridLinesOptions:Align := 1024/*exTextCalcRect*/
				oFormatGridLinesOptions:Color := "lightgray"
			oCategoryAxis:Format := "value left 7"
			oCategoryAxis:Split := .T.
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
216
ADOR, MDB

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oFormatGridLinesOptions
	LOCAL oSerie
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		rs := CreateObject("ADOR.Recordset")
			rs:Open("MSFT","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oGraph:DataSource := rs
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Date"
			oFormatGridLinesOptions := oCategoryAxis:ChartGridLines()
				oFormatGridLinesOptions:Format := "value left 7"
				oFormatGridLinesOptions:Align := 1024/*exTextCalcRect*/
				oFormatGridLinesOptions:Color := "lightgray"
			oCategoryAxis:Format := "value left 7"
			oCategoryAxis:Split := .T.
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Open,High,Low,Close"
			oSerie:Type := "ohlc"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
215
The value-axis gets updated as soon as the control is scrolled. It is possible to prevent that

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 2
		oGraph:SetProperty("Misc",10/*exUpdateRangeOnScroll*/,0)
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/aapl.txt"
		DevOut( Transform(oGraph:DataSample(),"") )
		oGraph:Series():Add("AAPL (open),AAPL (high),AAPL (low),AAPL (close)"):Type := "candle"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
214
Debug the data I loaded, or gatter a data sample

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/aapl.txt"
		DevOut( Transform(oGraph:DataSample(),"") )
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
213
Imports the control's data from a safe array (array, method 3)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie
	LOCAL rs

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		rs := CreateObject("ADOR.Recordset")
			rs:Open("MSFT","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGraph\Sample\Access\sample.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/)
		oGraph:Data := rs:GetRows()
		DevOut( Transform(oGraph:DataSample(),"") )
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Column 2,Column 3,Column 4,Column 5"
			oSerie:Type := "candle"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
212
Imports the control's data from a CSV format (file, method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		oGraph:Data := "C:\Program Files\Exontrol\ExGraph\Sample\Data/aapl.txt"
		oSerie := oGraph:Series():Add()
			oSerie:Name := "aapl"
			oSerie:Data := "AAPL (open),AAPL (high),AAPL (low),AAPL (close)"
			oSerie:Type := "candle"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
211
Imports the control's data from a CSV format (content, string, method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oSerie
	LOCAL oValueAxis

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:SetProperty("Misc",4/*extVisibleBeforeAxis*/,1)
		oGraph:AutoFit := .T.
		oGraph:DataOptions := "hdr=1 eor=';' eof=' '"
		oGraph:Data := "Month Min Max;Jan -2 10;Feb 0 12;Mar 3 15;Apr 7 18;May 12 22;Jun 16 25;Jul 18 28;Aug 17 27;Sep 14 24;Oct 9 19;Nov 4 15;Dec 0 10"
		oValueAxis := oGraph:ValueAxis()
			oValueAxis:Format := "value + `°`"
			oValueAxis:MajorGridLines():Color := "transparent"
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Month"
			oCategoryAxis:MajorGridLines():Color := "lightgray"
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Min,Max"
			oSerie:Type := "RangeColumn"
			oSerie:Vertical := .T.
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
210
Imports the control's data from a CSV format (file, method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ValueSize := 6
		oGraph:Import("C:\Program Files\Exontrol\ExGraph\Sample\Data/aapl.txt")
		oSerie := oGraph:Series():Add()
			oSerie:Name := "aapl"
			oSerie:Data := "AAPL (open),AAPL (high),AAPL (low),AAPL (close)"
			oSerie:Type := "candle"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
209
Imports the control's data from a CSV format (content, string, method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oSerie
	LOCAL oValueAxis

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:SetProperty("Misc",4/*extVisibleBeforeAxis*/,1)
		oGraph:AutoFit := .T.
		oGraph:Import("Month Min Max;Jan -2 10;Feb 0 12;Mar 3 15;Apr 7 18;May 12 22;Jun 16 25;Jul 18 28;Aug 17 27;Sep 14 24;Oct 9 19;Nov 4 15;Dec 0 10","hdr=1 eor=';' eof=' '")
		oValueAxis := oGraph:ValueAxis()
			oValueAxis:Format := "value + `°`"
			oValueAxis:MajorGridLines():Color := "transparent"
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Month"
			oCategoryAxis:MajorGridLines():Color := "lightgray"
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Min,Max"
			oSerie:Type := "RangeColumn"
			oSerie:Vertical := .T.
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
208
Define the field delimitators, such as eor(end of record), eof(end of field) and hdr(header)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis
	LOCAL oSerie
	LOCAL oValueAxis

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:SetProperty("Misc",4/*extVisibleBeforeAxis*/,1)
		oGraph:AutoFit := .T.
		oGraph:DataOptions := "hdr=1 eor=';' eof=' '"
		oGraph:Data := "Month Min Max;Jan -5 2;Feb -4 7;Mar 1 12;Apr 5 17;May 10 23;Jun 14 26;Jul 15 28;Aug 14 28;Sep 11 25;Oct 5 18;Nov 1 9;Dec -3 4"
		oValueAxis := oGraph:ValueAxis()
			oValueAxis:Format := "value + `°`"
			oValueAxis:MajorGridLines():Color := "transparent"
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "Month"
			oCategoryAxis:MajorGridLines():Color := "lightgray"
		oSerie := oGraph:Series():Add()
			oSerie:Data := "Min,Max"
			oSerie:Type := "RangeColumn"
		oGraph:SeriesColors := "RGB(9,80,239),RGB(9,120,239),RGB(249,186,7),RGB(249,173,7),RGB(255,148,51),RGB(255,125,51),RGB(255,114,51),RGB(255,120,51),RGB(255,139,51),RGB(249,171,7),RGB(249,200,7),RGB(9,110,239)"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
207
Define the size of the control's tooltip margins

PROCEDURE OnMouseMove(oGraph, Button, Shift, X, Y)
	oGraph:ShowToolTip("just a text to be shown when cursor hovers the view","title")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:MouseMove := {|Button, Shift, X, Y| OnMouseMove(oGraph, Button, Shift, X, Y)} /*Occurs when the user moves the mouse.*/

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:ToolTipMargin := "16,16"
		oGraph:Series():Add("Asia(4600),Africa(1300),Europe(747),North America(579),South America(433),Australia/Oceania(42)")
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
206
Sets the size of icons the control displays

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:ImageSize := 32
		oGraph:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oGraph:AutoFit := .T.
		oGraph:Series():Add("<img>1</img>Asia(4600),<img>2</img>Africa(1300),<img>3</img>Europe(747),<img>4</img>North America(579),<img>5</img>South America(433),<img>6</img>Australia/Oceania(42)")
		oGraph:SeriesColors := "blue"
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
205
Prevents the control to fire any event

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:FreezeEvents(.T.)
		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)"):Vertical := .T.
		oGraph:EndUpdate()
		oGraph:FreezeEvents(.F.)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
204
Display columns using EBN colors (BASE64)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oSerie

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABUQDg6AADACAxRDAMgBQKAAzAJBIYhiGgcYCgMZBSDeCYXABCEYRXBIZQ7BKNIxjSJwFiCCQwSDKEjyCKsGRHF6MI6gOYpCgOIYjRJNIASVAceAAHCUZrjSgobAiCYlTZCIBQS5oOBIACmabiegZLgmQInUrMEggVDgJSPuTWNQUdYdJQTHIZBpEWyLKjkNQwWrCNr3DTUEyNDauIDpCKLCpGZYYVRPOAgAKldxhGCaJokGkgc4HHyrcCwfDAMraCQQWAAF62Jb1JyrSSBchnOwpDpuCaVQLXUB5RRNQyZTiyIrtS5AAqnNJzW5cE46Li0B5QAC8QA1S7NPo/HaZT5kGB7ZDddzuADfcLlfD5BxEDCUhQmEPAbl6K4hlKQ5snwNwtleDxpBeMRIHmd4+A8R4/BuRZvEABQDEmDJoHUOQZEYMgVjQSIEE0fwRjCWQJAoEIXHWQxCAGBBggAbpemOCJaDaRowkQKwfgSEJCBQ" +;
			"DAGnCWAsDYTJTLSBwOlgfghggIgohYIA3A0Iw8GcCxCigZAsguB4hBwQ4HAyZAMjMJhJjIPBdA0SZxkAOoPEOIhMGEDYJHGSB0gmIg5CYSAokgAZggME4DCkAhACbIhgioIwImQDhXCOCQRHgNwogcIJyGCGImBGMAyAqYxJCISINAcAJcC0JxGmCbIiByQ5Zk4dYdCWORqFgJJGACYIkB0A5pn6AYgAmcY8DwHRDlCOg3CaZIKCwfgSgOOgUDwKRHFCfoUiWKRaF4eQACWMhUGEDoKHGWBAigag6gqJIpCmYJogMExDEqLA0ioah6giKAdkQGpOjWLQrGobjfEYMJwioHhEDqfpBjACohmAQoxGwewakiMpsisNBCCqbALEAQ40i0KtjCYRhQnSLQekQWxul2NwKlGaBEjgbg7gqZI5m4a4kEQK4tkuMBFjuLprFiDgnAYYJ8jAHxEHuXp5j4L4rnafI/m+PAGnoLBvgwEBH5Aa5Ih8GhEBKUIABKMJ" +;
			"sEMDwtAecQnBSRYxFwXwakYcZBCSNZDnGcQrCGlIigQagQkscgIEyShyjyKI3CARI8j8MZMDMLJXDSTZEjKYwqk6BJMnMPI8goMYwEQLoIEEOxElGNBdB8SpSHSTQjE6UZLj0FxRBONQ9E6cgpEaUQYj0IYFA0bxdlcNZilwfwTEiYRUDwHZDkCSxoAyNhQnMYgTHWYp4gcFB3C2Uxzl0N4IoQBvAjEwAQIApRfDvH2PELgOhEhUDwI0GgxBIgEDQEMRQ4hPgGBKBgEgSBTjIHkHwS4KQ8siEQJIMIkQxCvBwCoS4hAQCkBuIYcIuRrBzE6BMK4Eg7D0HOEAewIgDilFwPwE4mBODvDUCoew9BsiMCyJYQg+BlAiEwMQNArxwCKH6PARYLR6hSCuFYMYFRSgZBMCwA45gfiFHSAocomB5AnCmGcH4tAkgNFGHkFQNAGAEHAN4GQERhgQF0GsDIxg/iTHIJwMw4RVA2EMCEOA9APgGE+JgNATBHE4F6Ac" +;
			"UAZwuAYAAAgBBAQ==")
		oGraph:AutoFit := .T.
		oSerie := oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)")
			oSerie:Color := 16777216
			oSerie:Vertical := .T.
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
203
Display columns using EBN colors

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Pacific Ocean(16525), Atlantic Ocean(10646), Indian Ocean(7056), Southern Ocean(2033), Arctic Ocean(1406)"):Color := 16777216
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
202
Show images

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph
	LOCAL oCategoryAxis

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:BeginUpdate()
		oGraph:SetProperty("HTMLPicture","china","c:\exontrol\images\zipdisk.gif")
		oGraph:SetProperty("HTMLPicture","india","c:\exontrol\images\auction.gif")
		oGraph:SetProperty("HTMLPicture","usa","c:\exontrol\images\colorize.gif")
		oGraph:SetProperty("Misc",29/*exShowValueIf*/,0)
		oGraph:SetProperty("Misc",28/*exShowLabelsIf*/,0)
		oGraph:ValueSize := 32
		oCategoryAxis := oGraph:CategoryAxis()
			oCategoryAxis:Categories := "<img>china</img>,<img>india</img>,<img>usa</img>"
			oCategoryAxis:MajorGridLines():Color := "lightgray"
		oGraph:Series():Add("1410,1390,331")
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
201
Shows a custom tooltip

PROCEDURE OnMouseMove(oGraph, Button, Shift, X, Y)
	oGraph:ShowToolTip("just a text to be shown when cursor hovers the view","title")
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oGraph

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oGraph := XbpActiveXControl():new( oForm:drawingArea )
	oGraph:CLSID  := "Exontrol.Graph.1" /*{FE177A66-2B4E-48E1-ADAD-E5C17BE47660}*/
	oGraph:create(,, {10,60},{610,370} )

		oGraph:MouseMove := {|Button, Shift, X, Y| OnMouseMove(oGraph, Button, Shift, X, Y)} /*Occurs when the user moves the mouse.*/

		oGraph:BeginUpdate()
		oGraph:AutoFit := .T.
		oGraph:Series():Add("Asia(4600),Africa(1300),Europe(747),North America(579),South America(433),Australia/Oceania(42)")
		oGraph:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN